import { autoUpdater } from 'electron-updater';
import { ipcMain } from 'electron';
import { bridgeKeys } from '../renderer/src/utils/dicts.js';
import { useEvent } from './event';

export function checkUpdate(options = {}) {
  autoUpdater.autoDownload = false; // 关闭自动更新
  autoUpdater.forceDevUpdateConfig = true; // 强制启用开发环境更新
  // 监听更新事件
  autoUpdater.on('checking-for-update', () => {
    // 正在检查更新
    console.log('checkingForUpdates...');
  });

  autoUpdater.on('update-available', (info) => {
    // 发现新版本
    console.log('update-available:', info.version);
    options.updateAvailable && options.updateAvailable(info);
  });

  autoUpdater.on('update-not-available', (info) => {
    // 当前已是最新版本
    console.log('update-not-available:', info.version);
  });

  autoUpdater.on('download-progress', (info) => {
    // 监听下载进度
    console.log('download-progress:', info);
    options.downloadProgress && options.downloadProgress(info);
  });

  autoUpdater.on('update-downloaded', () => {
    // 更新已下载，准备安装
    console.log('update-downloaded...');
    options.updateDownloaded && options.updateDownloaded();
  });

  // 监听升级失败事件
  autoUpdater.on('error', (error) => {
    // 下载失败
    console.log(error);
  });

  autoUpdater.checkForUpdates(); // 检查更新
  const { on } = useEvent();
  on.startDownload(() => {
    autoUpdater.downloadUpdate(); // 手动开始下载
  });
}
